perm filename NEWLST.SAI[LOU,BGB] blob sn#124056 filedate 1974-12-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "ADRLST"
C00003 00003	INST←'67100000000
C00005 00004	ICOUNT←0
C00007 00005	OPEN (2,"LPT",0,0,10,120,BREAK,EOF)
C00009 ENDMK
C⊗;
BEGIN "ADRLST"
STRING BLANKS,ADDRESS,S,JS;
REQUIRE 10000 STRING_SPACE;
SAFE STRING ARRAY TAG[1:1000];
SAFE INTEGER ARRAY PTR,ZIP[1:1000];
SAFE STRING ARRAY PS[1:6];
INTEGER LAST,MAX,MIN,INST,ICOUNT,COUNT,I,J,K,BREAK,EOF;
LABEL LPT,L11,L1,L2;
BOOLEAN TEST;
INST←'67100000000;
SETFORMAT(4,0);
BLANKS←"                                                 ";
OPEN (1,"DSK",0,3,0,120,BREAK,EOF);
L2:	OUTSTR("FILE ?
");
S←INCHWL;
IF EQU(S,NULL) THEN LOOKUP(1,"MUSIC.ADR",TEST) ELSE LOOKUP(1,S,TEST);
IF TEST THEN BEGIN USERERR(0,1,"FILE NOT FOUND");GO TO L2 END;
OUTSTR ("EXCLUDE ?
");
S←INCHWL;
BREAKSET(2,'15,"O");
BREAKSET(2,S&'12,"I");
OUTSTR ("INCLUDE ?
");
S←INCHWL;
TEST←¬EQU(S,NULL);
SETBREAK(8,"	",NULL,"I");
BREAKSET(7,S,"I");
BREAKSET(1,"⊗;","I");
BREAKSET(1,NULL,"N");
BREAKSET(1,'14&'12&'15,"O");
BREAKSET(3,",","I");
BREAKSET(4,"	 ","X");
BREAKSET(4,NULL,"R");
SETBREAK(5,'14,NULL,"I");
SETBREAK(6,'12,'15,"IN");
ICOUNT←0;
JS←INPUT(1,1);
IF BREAK="⊗"
THEN BEGIN DO INPUT(1,5) UNTIL BREAK='14;
L1:JS←INPUT(1,1)
END;
IF ¬EOF THEN BEGIN
	IF ¬LENGTH(JS) THEN BEGIN INPUT(1,6); GO TO L1 END;
	S←INPUT(1,2);
	IF BREAK ≠'12 THEN GO TO L1;
	S←SCAN(S,7,BREAK);
	IF TEST ∧ BREAK=0 THEN GO TO L1;
	ICOUNT←ICOUNT+1;
	IF ICOUNT>1000 THEN USERERR(0,1,"INCREASE ARRAY SIZES");
	TAG[ICOUNT]←JS;
	JS←JS[(LENGTH(JS)-8) TO ∞];
	ZIP[ICOUNT]←INTSCAN(JS,I);
	GO TO L1 END;
RELEASE (1);
COUNT←0;LAST←-1;
DO BEGIN
MIN←100000;
FOR I←1 STEP 1 UNTIL ICOUNT DO IF LAST<ZIP[I]<MIN THEN MIN←ZIP[I];
LAST←MIN;
FOR I←1 STEP 1 UNTIL ICOUNT DO IF ZIP[I]=MIN THEN PTR[COUNT←COUNT+1]←I;
END UNTIL COUNT=ICOUNT;
OPEN (2,"LPT",0,0,10,120,BREAK,EOF);
OUTSTR(CVS(ICOUNT)&" LABELS, TYPE C/R WHEN READY TO PRINT
");
INCHWL;
LPT:FOR COUNT←1 STEP 1 UNTIL ICOUNT DO BEGIN
	ADDRESS←TAG[PTR[COUNT]];
	S←SCAN(ADDRESS,3,BREAK);
	JS←SCAN(S,8,BREAK);
	IF BREAK="	" THEN
		BEGIN
		SCAN(S,4,BREAK);
		S←S&" "&JS
		END
	ELSE S←JS;
	FOR J←1 STEP 1 WHILE J<7 ∧ LENGTH(ADDRESS) DO BEGIN
		SCAN(ADDRESS,4,BREAK);
		PS[J]←SCAN(ADDRESS,3,BREAK)END;
	IF J>6 THEN BEGIN USERERR(0,1,S&"ADDRESS TOO LONG");
		GO TO L11 END;
	S←"	"&S
	&'15&'177&'21&"	"
	&(JS←PS[1])&BLANKS[1 FOR (34 - LENGTH(JS))]
	&CVS(COUNT);
	FOR K←2 STEP 1 UNTIL J-2 DO S←S&'15&'177&'21&"	"&PS[K];
	S←S&", "&PS[J-1]&'15&'177&'21;
	IF COUNT MOD 11=0 THEN S←S&'15&'14 ELSE FOR K←J STEP 1 UNTIL 6 DO S←S&'15&'177&'21;
	OUT(2,S);
	START_CODE XCT INST;END;
L11:	END;
CLOSE(2);
DO BEGIN OUTSTR("REPEATS ?
");
COUNT←0;
END UNTIL (S←INCHWL)="Y" ∨ S="N";
IF S="Y" THEN WHILE TRUE DO BEGIN
	OUTSTR("FROM TO ?");
	MIN←INTSCAN(S←INCHWL,I);
	IF I=-1 THEN DONE;
	MAX←INTSCAN(S,I);
	IF I=-1 THEN MAX←MIN;
	FOR I←MIN STEP 1 UNTIL MAX DO ZIP[COUNT←COUNT+1]←PTR[I];
END;
ARRBLT(PTR[1],ZIP[1],ICOUNT←COUNT);
IF COUNT THEN GO TO LPT;
OUTSTR("REPLACE PAPER AND TYPE C/R
");
INCHWL;
RELEASE (2);
END "ADRLST";